RAG 概述
背景
大模型(如 ChatGPT)存在两个固有缺陷:幻觉(生成不实信息)和知识时效性(训练数据截止时间限制)。对于企业私有知识,模型更无法直接访问。
解决方案有两种:
- 垂直领域微调:融合企业私有知识重新训练
- RAG(检索增强生成):通过检索外部知识库,将相关文档注入 prompt,减少幻觉,提高准确性和时效性
原理
RAG 在生成回答前,先从外部知识库中检索与用户问题相关的文档片段,将其与问题拼接后送入大模型生成答案。核心思路:让 LLM 先"查资料"再回答。
典型项目流程(以 Java 学科在线答疑系统为例)
- QA 数据入库:将历史 QA 数据集存入 MySQL
- MySQL 快速匹配:用户 query 与历史问题做相似度计算
- 相似度 ≥ 0.85 → 直接返回已有答案
- 相似度 < 0.85 → 进入 RAG 系统检索
- 本地知识库搭建:
- 加载本地文档
- 文档切分(分割为 chunks)
- 向量化(Embedding)
- 存入向量数据库(Milvus)
- Milvus 检索:query 向量化后检索 top-k 相似文本段
- 生成答案:query + 检索文本段拼接,送入 LLM 生成最终结果
核心工具
| 工具 | 作用 |
|---|---|
| Ollama | 开源大模型服务工具,支持本地运行大模型 |
| LangChain | LLM 通用接口框架,链接各组件,简化应用开发 |
| Milvus | 开源向量数据库,存储和检索嵌入向量 |
环境依赖
- Python ≥ 3.10
pip install faiss-cpu langchain qianfan(内容由AI生成,仅供参考)